#ifndef EXCURSION_CPP
#define EXCURSION_CPP

#include "Excursion.h"

ostream &operator<<(ostream &out, const IExcursion &e){
	out<<e.ObtenerNro()<<"\t\t\t"<<e.ObtenerFechaPartida()<<"\t\t";
	//faltan imprimir las ciudades
	return out;
}

Excursion::Excursion(const nat &nro, const Cadena &fechaP){
	nroExcursion = nro;
	fechaPartida = fechaP;
	costoTotal = 0;
	itinerario = new ListaImp<Tupla<pCiudad,nat>>();
}
Excursion::~Excursion(){
	itinerario->~Lista();
}
nat Excursion::ObtenerNro() const{
	return nroExcursion;
}
Cadena Excursion::ObtenerFechaPartida() const{
	return fechaPartida;
}

nat Excursion::ObtenerCostoTotal() const{
	return costoTotal;
}

void Excursion::AgregarCiudad(const Tupla<pCiudad, nat> & escala){
	this->itinerario->Agregar(escala);
}
void Excursion::incrementarCosto(const nat &costoC){
	costoTotal = costoTotal + costoC;
}
Puntero<Iterador<Tupla<pCiudad,nat>>> Excursion::ObtenerItinerario() const{
	return itinerario->ObtenerIterador();
}
bool Excursion::operator ==(const IExcursion &e) const{
	return nroExcursion == e.ObtenerNro();
}

bool Excursion::operator <(const IExcursion &e) const{
	return nroExcursion < e.ObtenerNro();
}
bool Excursion::operator>(const IExcursion& e) const{
	return nroExcursion > e.ObtenerNro();
}
#endif